/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package lojavirtual.persistence;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.List;
import lojavirtual.model.Produto;
import lojavirtual.util.ConnectionFactory;
import lojavirtual.util.HibernateUtil;
import org.hibernate.Session;

/**
 *
 * @author 710930
 */
public class ProdutoDAO implements DAO<Produto> {

    public void inserir(Produto produto) {
       /*Connection connection = ConnectionFactory.getConnection();

       try{

           String SQL = " INSERT INTO PRODUTO(NOME, DESCRICAO, COR, PESO, PRECO) VALUES (?, ?, ?, ?, ?) ";
           PreparedStatement statement = connection.prepareStatement(SQL);
           statement.setString(1, produto.getNome());
           statement.setString(2, produto.getDescricao());
           statement.setString(3, produto.getCor());
           statement.setFloat(4, produto.getPeso());
           statement.setFloat(5, produto.getPreco());
           statement.executeUpdate();

       } catch (Exception e){ e.printStackTrace();}
       finally { ConnectionFactory.close(connection); }*/

       Session session = HibernateUtil.getSessionFactory().openSession();
       session.getTransaction().begin();
       session.save(produto);
       session.getTransaction().commit();

    }

    public void alterar(Produto produto) {
       Connection connection = ConnectionFactory.getConnection();

       try{

           String SQL = "UPDATE PRODUTO (NOME, DESCRICAO, COR, PESO, PRECO) SET (?, ?, ?, ?, ?) WHERE ID = ?";

           PreparedStatement statement = connection.prepareStatement(SQL);
           statement.setString(1, produto.getNome());
           statement.setString(2, produto.getDescricao());
           statement.setString(3, produto.getCor());
           statement.setFloat(4, produto.getPeso());
           statement.setFloat(5, produto.getPreco());
           statement.setInt(6, produto.getId());
           statement.executeUpdate();

       } catch (Exception e){ e.printStackTrace();}
       finally { ConnectionFactory.close(connection); }
    }

    public List<Produto> listar(Produto produto) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void remover(Produto produto) {
       Connection connection = ConnectionFactory.getConnection();

       try{

           String SQL = "DELETE FROM PRODUTO WHERE ID = ?";

           PreparedStatement statement = connection.prepareStatement(SQL);
           statement.setInt(1, produto.getId());
           statement.executeUpdate();

       } catch (Exception e){ e.printStackTrace();}
       finally { ConnectionFactory.close(connection); }
    }

    public Produto findById(Integer id){
        Produto produto;

        Session session = HibernateUtil.getSessionFactory().openSession();
        session.beginTransaction();
        session.getTransaction().begin();
            produto = (Produto) session.get(Produto.class, id);
        session.getTransaction().commit();

        return produto;
    }

}
